package repository;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

import repository.impl.CustomerReportItem;
import repository.impl.IncomeReport;
import domain.Purchase;
import domain.User;
import domain.exceptions.BigRangeException;


public interface PurchaseRepository {
	public Purchase getPurchase(int id);
	public void purchaseItem(Purchase purchase);
	public List<Purchase> getPurchasedItems(User user);
	public List<Purchase> getSoldItems(User user);
	public List<Purchase> getPurchasedAndSellItems(User user);
	public Map<Date, Long> getPurchases(Date dateBefore, Date dateAfter) throws BigRangeException;
	public Map<String, Long> getPurchasesByCategory();
	public Set<CustomerReportItem> getMaxSell();
	public Set<CustomerReportItem> getMaxBuy();
	public List<String> getComment(User user);
	public List<Purchase> getConflictedPurchases();
	public List<Purchase> getDebtPendingPurchases();
	public List<IncomeReport> getIncomeReport(Date dateBefore, Date dateAfter) throws BigRangeException, java.text.ParseException;
	public List<Purchase> getPendingConfirmationPurchases(int dayAmount);
	public int getPositive(User user);
	public int getNegative(User user);
	public int getNeutral(User user);
	public void deletePurchase(Purchase purchase);
}
